A data network configuration implemented in business environments typically involves centralizing data storage at a data center and providing this data (e.g., via a server at the data center) to a plurality of client computing devices over a wide area network (e.g., Internet). These client computing devices (“clients”) may be located at “branch offices” of the company, such as in the retail, banking, and airline industry. In each branch office, client computing devices may be interconnected to each other using a local area network (LAN). Applications running on the client devices may require data from the data center, such as records, files, merchandising data, etc. However, the interconnection between the branch office and the data center is typically via a low bandwidth connection. Since these applications may require large amount of data, the slow connection leads to poor application performance.
As a result, companies may increase the bandwidth of the interconnection between the branch office and the data center. However, increasing the bandwidth of the interconnection is costly.
Alternatively, companies may add a proxy server at each branch office to serve as an intermediary for requests from clients seeking resources (e.g., file, merchandising data) from other servers at the data center. Once the proxy server has serviced the client's request, it may cache the resource for future requests for the resource. In this manner, when a client requests that resource, the proxy server may directly provide that resource instead of obtaining the resource from the data center. While this improves the performance of the branch application, each branch proxy server is independent of one another. That is, each branch proxy server is independent of the other branch proxy servers at the other branch offices. As a result, one branch proxy server may store a later version of the resource than another branch proxy server. A branch proxy server may even be storing an expired or invalid resource; whereas, another branch proxy server is storing a valid version of the same resource.